/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo.persistencia;

import java.util.*;
import java.sql.*;
import modelo.IEmpleado;
import modelo.personas;
/**
 *
 * @author LEONIC
 */
public class EmpleadoDAO implements IEmpleadoDAO{

    public IEmpleado read(String dni) {
        IEmpleado c = null;
        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res = stmt.executeQuery("SELECT * FROM personas where id=" + dni);
            String nombre,tarea,rol,usuario,password;
            double salario,pluses;
            int codTienda;
            boolean empleado;
            if (res.next()) {
                nombre= res.getString("nombre");
                salario = res.getDouble("salario");
                tarea = res.getString("tarea");
                rol = res.getString("rol");
                empleado = res.getBoolean("empleado");
                codTienda = res.getInt("cod_tienda");
                usuario = res.getString("usuario");
                password = res.getString("password");
                pluses = res.getDouble("pluses");
                c = new personas(dni,nombre,salario,tarea,rol,empleado,codTienda,usuario,password,pluses);
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return c;
    }

    public void update(IEmpleado empleado) {
        String sql=null;
          sql = "UPDATE personas SET nombre = ?, salario = ?, rol = ?, empleado = ?, cod_tienda = ?, usuario = ?, password = ?, pluses = ? WHERE dni = ?";

          try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setString(1, empleado.getNombre());
            stm.setDouble(2, empleado.getSalario());
            stm.setString(3, empleado.getRol());
            stm.setBoolean(4, empleado.getEmpleado());
            stm.setInt(5, empleado.getCodigoTienda());
            stm.setString(6, empleado.getUsuario());
            stm.setString(7, empleado.getPassword());
            stm.setDouble(8, empleado.getPluses());
            stm.setString(9, empleado.getDNI());

            stm.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public void delete(IEmpleado empleado) {
        String sql = "DELETE FROM personas WHERE dni = ?";
        try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setString(1, empleado.getDNI());

            stm.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public List<IEmpleado> list() {
        List<IEmpleado> empleados = new ArrayList<IEmpleado>();

        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res = stmt.executeQuery("SELECT * FROM personas where empleado = true ");
            String dni,nombre,tarea,rol,usuario,password;
            double salario,pluses;
            int codTienda;
            boolean empleado;
            while (res.next()) {
                dni = res.getString("dni");
                nombre= res.getString("nombre");
                salario = res.getDouble("salario");
                tarea = res.getString("tarea");
                rol = res.getString("rol");
                empleado = res.getBoolean("empleado");
                codTienda = res.getInt("cod_tienda");
                usuario = res.getString("usuario");
                password = res.getString("password");
                pluses = res.getDouble("pluses");
                empleados.add(new personas(dni,nombre,salario,tarea,rol,empleado,codTienda,usuario,password,pluses));
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return empleados;
    }
    
}
